home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Source Code / Libraries / PNL Libraries / MyTrackTextItems.p < prev    next >
Encoding:
Text File  |  1995-02-02  |  1.9 KB  |  79 lines  |  [TEXT/CWIE]

  1. unit MyTrackTextItems;
  2.  
  3. interface
  4.  
  5.     uses
  6.         Dialogs;
  7.  
  8.     procedure TrackTextItemsCreate (dialog: DialogPtr; var data: univ handle);
  9.     procedure TrackTextItemsDestroy (var data: univ handle);
  10.     procedure TrackTextItems (data: univ handle; dialog: DialogPtr);
  11.     function AnyTextItemHasChanged (data: univ handle; dialog: DialogPtr): boolean;
  12.     function TextItemHasChanged (data: univ handle; dialog: DialogPtr; item: integer): boolean;
  13.     function TextItemWas (data: univ handle; item: integer): str255;
  14.  
  15. implementation
  16.  
  17.     uses
  18.         MyStrh, MyDialogs;
  19.  
  20.     procedure TrackTextItemsCreate (dialog: DialogPtr; var data: univ handle);
  21.     begin
  22.         data := Handle(NewStrH);
  23.         TrackTextItems(data, dialog);
  24.     end;
  25.  
  26.     procedure TrackTextItemsDestroy (var data: univ handle);
  27.     begin
  28.         DisposeHandle(data);
  29.     end;
  30.  
  31.     procedure SafeGetItemText (dialog: DialogPtr; item: integer; var s: str255);
  32.         var
  33.             k: integer;
  34.     begin
  35.         s := '';
  36.         GetDItemKind(dialog, item, k);
  37.         if k in [editText, statText] then begin
  38.             GetItemText(dialog, item, s);
  39.         end;
  40.     end;
  41.  
  42.     procedure TrackTextItems (data: univ handle; dialog: DialogPtr);
  43.         var
  44.             i: integer;
  45.             s: str255;
  46.     begin
  47.         for i := 1 to CountDItems(dialog) do begin
  48.             SafeGetItemText(dialog, i, s);
  49.             SetIndStrH(StrHHandle(data), i, s);
  50.         end;
  51.     end;
  52.  
  53.     function TextItemWas (data: univ handle; item: integer): str255;
  54.     begin
  55.         TextItemWas := GetIndStrH(StrHHandle(data), item);
  56.     end;
  57.  
  58.     function TextItemHasChanged (data: univ handle; dialog: DialogPtr; item: integer): boolean;
  59.         var
  60.             s: str255;
  61.     begin
  62.         SafeGetItemText(dialog, item, s);
  63.         TextItemHasChanged := s <> TextItemWas(data, item);
  64.     end;
  65.  
  66.     function AnyTextItemHasChanged (data: univ handle; dialog: DialogPtr): boolean;
  67.         var
  68.             i: integer;
  69.     begin
  70.         AnyTextItemHasChanged := false;
  71.         for i := 1 to CountDItems(dialog) do begin
  72.             if TextItemHasChanged(data, dialog, i) then begin
  73.                 AnyTextItemHasChanged := true;
  74.                 leave;
  75.             end;
  76.         end;
  77.     end;
  78.  
  79. end.